Configuration management for a resource with prerequisites

ABSTRACT

Embodiments are directed towards employing a configuration management system to report one or more assumptions based on whether or not prerequisites for a resource are satisfied. The configuration management system may determine at least one prerequisite that corresponds to a provided resource. The prerequisites may indicate what the resource requires in order to put the system into the target state. If the prerequisites are unsatisfied, then assumptions regarding the system may be determined and reported to a user of the system. The assumptions may include at least a state transition that upon occurrence puts the system into the target state. If the system is in a non-operational mode, such that state actions and state transitions are simulated, rather than being executed, the system may be enabled to perform other actions as if the prerequisites were satisfied and the state transition occurred, even if it is not.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This Utility Patent Application is a Continuation of U.S. patentapplication Ser. No. 13/831,932 filed on Mar. 15, 2013, now U.S. Pat.No. 9,379,954 issued on Jun. 28, 2016, the benefit of which is claimedunder 35 U.S.C. §120, and which is further incorporated by reference inits entirety.

TECHNICAL FIELD

The present invention relates generally to configuration management, andmore particularly, but not exclusively, to reporting one or moreassumptions based on whether or not prerequisites for a resource aresatisfied.

BACKGROUND

The increased deployment and popularity of cloud-based applications andservices running on computing clusters of physical and virtual machineshas significantly complicated configuration management tasks, such asprovisioning software, deploying software patches, upgrading servers, orthe like. Currently, system administrators may employ a variety of adhoc procedures to perform configuration management, but for largemachine clusters these ad hoc procedures may be inadequate. Theinadequacies of ad hoc configuration management procedures mayjeopardize the operations of critical cloud-based services. For example,if installing a piece of software depends on the previous installationof another piece of software, the system may error out if the previoussoftware was not completely installed. This error may result inextended/unknown downtime for critical systems while a systemadministrator attempts to determine the cause of the error. It is withrespect to these considerations and others that the present inventionhas been made.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments of the present invention aredescribed with reference to the following drawings. In the drawings,like reference numerals refer to like parts throughout the variousfigures unless otherwise specified.

For a better understanding of the present invention, reference will bemade to the following Detailed Description, which is to be read inassociation with the accompanying drawings, wherein:

FIG. 1 illustrates a system environment in which various embodiments maybe implemented;

FIG. 2A shows a rack of blade servers that may be included in variousembodiments;

FIG. 2B illustrates an embodiment of a blade server that may be includedin a rack of blade servers such as that shown in FIG. 2A;

FIG. 3 shows a client device that may be included in variousembodiments;

FIG. 4 illustrates a network device that may be included in variousembodiments;

FIG. 5 illustrates a logical flow diagram generally showing oneembodiment of an overview process for determining if prerequisites for aresource are satisfied and reporting assumptions based on theprerequisites;

FIG. 6 illustrates a logical flow diagram generally showing analternative embodiment of a process for determining if prerequisites fora resource are satisfied and reporting assumptions based on theprerequisites; and

FIGS. 7 and 8 show use case illustrations of multiple resources and thereported assumptions generated based on the resources.

DETAILED DESCRIPTION

Various embodiments now will be described more fully hereinafter withreference to the accompanying drawings, which form a part hereof, andwhich show, by way of illustration, specific embodiments by which theinvention may be practiced. The embodiments may, however, be embodied inmany different forms and should not be construed as limited to theembodiments set forth herein; rather, these embodiments are provided sothat this disclosure will be thorough and complete, and will fullyconvey the scope of the embodiments to those skilled in the art. Amongother things, the various embodiments may be methods, systems, media, ordevices. Accordingly, the various embodiments may take the form of anentirely hardware embodiment, an entirely software embodiment, or anembodiment combining software and hardware aspects. The followingdetailed description is, therefore, not to be taken in a limiting sense.

Throughout the specification and claims, the following terms take themeanings explicitly associated herein, unless the context clearlydictates otherwise. The phrase “in one embodiment” as used herein doesnot necessarily refer to the same embodiment, though it may.Furthermore, the phrase “in another embodiment” as used herein does notnecessarily refer to a different embodiment, although it may. Thus, asdescribed below, various embodiments of the invention may be readilycombined, without departing from the scope or spirit of the invention.

In addition, as used herein, the term “or” is an inclusive “or”operator, and is equivalent to the term “and/or,” unless the contextclearly dictates otherwise. The term “based on” is not exclusive andallows for being based on additional factors not described, unless thecontext clearly dictates otherwise. In addition, throughout thespecification, the meaning of “a,” “an,” and “the” include pluralreferences. The meaning of “in” includes “in” and “on.”

As used herein, the term “resource” may refer to a data object thatdefines a target state of some aspect of a system of at least onenetwork device, which may be referred to herein as a system and/orcomputing system. Examples of such aspects may include, but is notlimited to a file's content, security metadata, process installationsuccess, or the like.

As used herein, the phrase “resource convergence” may refer to a processof determining what aspects of a resource do not match a target stateand executing one or more state transitions to bring the resource intothe target state. In some embodiments, a state transition may not occurif the system is in the target state, or the state defined by theresource, and the resource may be referred to as being converged.

As used herein, the term “notification” may refer to a link between twoor more resources where convergence in one resource may triggerconvergence of a linked resource. If the notifying resource is alreadyconverged, convergence may not be triggered in the linked resource.

As used herein, the phrase “configuration management system” may referto a software program that converges a collection of resources. In someembodiments, a collection of resources may include a plurality ofresources, but in other embodiments, it may include a single resource.

As used herein, the phrase “system convergence” may refer to a processof converging all resources in the configuration management system'scollection of resources.

As used herein, the term “prerequisite” may refer to instructions,conditions, or the like, that define what the resource depends on, orotherwise requires, in order to put the system into the target state asdefined by the resource.

As used herein, the term “assumptions” may refer to instructions and/orinformation regarding what prerequisites were or were not satisfied fora resource and/or why a prerequisite was not satisfied. In someembodiments, assumptions may include state transitions that uponoccurrence put the system into a target state.

The following briefly describes embodiments of the invention in order toprovide a basic understanding of some aspects of the invention. Thisbrief description is not intended as an extensive overview. It is notintended to identify key or critical elements, or to delineate orotherwise narrow the scope. Its purpose is merely to present someconcepts in a simplified form as a prelude to the more detaileddescription that is presented later.

Briefly stated, various embodiments are directed to employing aconfiguration management system to report one or more assumptions basedon whether or not prerequisites for a resource are satisfied. In someembodiments, the configuration management system may determine at leastone prerequisite that corresponds to a provided resource. In someembodiments, the prerequisites may be instructions, conditions, or thelike, that define what the resource depends on, or otherwise requires,in order to put the system into the target state as defined by theresource. In some embodiments, the prerequisites may be based on atleast one previously determined assumption for another resource. If theprerequisites are unsatisfied, then at least one assumption regardingthe system may be determined and reported to a user of the system. Theat least one assumption may include at least a state transition thatupon occurrence puts the system into the target state.

In some embodiments, the computing system may be in a non-operationalmode, such that state actions and state transitions are simulated,rather than occurring and/or being executed. In at least one suchembodiment, the system may be enabled to perform other actions as if theprerequisites were satisfied and the state transition occurred, even ifit is not.

In at least one of various embodiments, a plurality of resources may beprovided. In some embodiments, at least one resource may be dependent onanother resource, such that at least one prerequisite for a resource isbased on at least one previously determined assumption for anotherresource.

Illustrative Operating Environment

FIG. 1 shows components of an environment in which various embodimentsmay be practiced. Not all of the components may be required to practicethe various embodiments, and variations in the arrangement and type ofthe components may be made without departing from the spirit or scope ofthe various embodiments.

In at least one embodiment, cloud network 102 enables one or morenetwork services for a user based on the operation of correspondingarrangements 104 and 106 of virtually any type of networked computingdevice. As shown, the networked computing devices may include ResourceConvergence Server Device (RCSD) 112, Prerequisite Server Device (PSD)114, enclosure of blade servers 110, enclosure of server computers 116,super computer network device 118, and the like. Although not shown, oneor more client devices may be included in cloud network 102 in one ormore arrangements to provide one or more network services to a user.Also, these arrangements of networked computing devices may or may notbe mutually exclusive of each other.

Additionally, the user may employ a plurality of virtually any type ofwired or wireless networked computing devices to communicate with cloudnetwork 102 and access at least one of the network services enabled byone or more of arrangements 104 and 106. These networked computingdevices may include tablet client device 122, handheld client device124, desktop client device 120, and the like. Although not shown, invarious embodiments, the user may also employ notebook computers,desktop computers, microprocessor-based or programmable consumerelectronics, network appliances, mobile telephones, smart telephones,wearable client devices, pagers, radio frequency (RF) devices, infrared(IR) devices, Personal Digital Assistants (PDAs), televisions,integrated devices combining at least one of the preceding devices, andthe like.

One embodiment of a client device is described in more detail below inconjunction with FIG. 3. Generally, client devices may include virtuallyany substantially portable networked computing device capable ofcommunicating over a wired, wireless, or some combination of wired andwireless network.

In various embodiments, network 102 may employ virtually any form ofcommunication technology and topology. For example, network 102 caninclude local area networks Personal Area Networks (PANs), (LANs),Campus Area Networks (CANs), Metropolitan Area Networks (MANs) Wide AreaNetworks (WANs), direct communication connections, and the like, or anycombination thereof. On an interconnected set of LANs, including thosebased on differing architectures and protocols, a router acts as a linkbetween LANs, enabling messages to be sent from one to another. Inaddition, communication links within networks may include virtually anytype of link, e.g., twisted wire pair lines, optical fibers, open airlasers or coaxial cable, plain old telephone service (POTS), waveguides, acoustic, full or fractional dedicated digital communicationlines including T1, T2, T3, and T4, and/or other carrier and other wiredmedia and wireless media. These carrier mechanisms may includeE-carriers, Integrated Services Digital Networks (ISDNs), universalserial bus (USB) ports, Firewire ports, Thunderbolt ports, DigitalSubscriber Lines (DSLs), wireless links including satellite links, orother communications links known to those skilled in the art. Moreover,these communication links may further employ any of a variety of digitalsignaling technologies, including without limit, for example, DS-0,DS-1, DS-2, DS-3, DS-4, OC-3, OC-12, OC-48, or the like. Furthermore,remotely located computing devices could be remotely connected tonetworks via a modem and a temporary communication link. In essence,network 102 may include virtually any communication technology by whichinformation may travel between computing devices. Additionally, in thevarious embodiments, the communicated information may include virtuallyany kind of information including, but not limited to processor-readableinstructions, data structures, program modules, applications, raw data,control data, archived data, video data, voice data, image data, textdata, and the like.

Network 102 may be partially or entirely embodied by one or morewireless networks. A wireless network may include any of a variety ofwireless sub-networks that may further overlay stand-alone ad-hocnetworks, and the like. Such sub-networks may include mesh networks,Wireless LAN (WLAN) networks, Wireless Router (WR) mesh, cellularnetworks, pico networks, PANs, Open Air Laser networks, Microwavenetworks, and the like. Network 102 may further include an autonomoussystem of intermediate network devices such as terminals, gateways,routers, switches, firewalls, load balancers, and the like, which arecoupled to wired and/or wireless communication links. These autonomousdevices may be operable to move freely and randomly and organizethemselves arbitrarily, such that the topology of network 102 may changerapidly.

Network 102 may further employ a plurality of wired and wireless accesstechnologies, e.g., 2nd (2G), 3rd (3G), 4th (4G), 5^(th) (5G) generationwireless access technologies, and the like, for mobile devices. Thesewired and wireless access technologies may also include Global Systemfor Mobile communication (GSM), General Packet Radio Services (GPRS),Enhanced Data GSM Environment (EDGE), Code Division Multiple Access(CDMA), Wideband Code Division Multiple Access (WCDMA), Long TermEvolution Advanced (LTE), Universal Mobile Telecommunications System(UMTS), Orthogonal frequency-division multiplexing (OFDM), Wideband CodeDivision Multiple Access (W-CDMA), Code Division Multiple Access 2000(CDMA2000), Evolution-Data Optimized (EV-DO), High-Speed Downlink PacketAccess (HSDPA), IEEE 802.16 Worldwide Interoperability for MicrowaveAccess (WiMax), ultra wide band (UWB), user datagram protocol (UDP),transmission control protocol/Internet protocol (TCP/IP), any portion ofthe Open Systems Interconnection (OSI) model protocols, Short MessageService (SMS), Multimedia Messaging Service (MMS), Web Access Protocol(WAP), Session Initiation Protocol/Real-time Transport Protocol(SIP/RTP), or any of a variety of other wireless or wired communicationprotocols. In one non-limiting example, network 102 may enable a mobiledevice to wirelessly access a network service through a combination ofseveral radio network access technologies such as GSM, EDGE, SMS, HSDPA,and the like.

One embodiment of RCSD 112 is described in more detail below inconjunction with FIG. 4. Briefly, however, RCSD 112 includes virtuallyany network device capable of performing configuration management tasks,including resource convergence. In at least one of various embodiments,RCSD 112 may determine if prerequisites for a resource are satisfied.And if so, determine and report at least one assumption regarding theunsatisfied prerequisites. Devices that may be arranged to operate asRCSD 112 include various network devices, including, but not limited topersonal computers, desktop computers, multiprocessor systems,microprocessor-based or programmable consumer electronics, network PCs,server devices, network appliances, and the like.

Although FIG. 1 illustrates RCSD 112 as a single computing device, theinvention is not so limited. For example, one or more functions of theRCSD 112 may be distributed across one or more distinct network devices.Moreover, RCSD 112 is not limited to a particular configuration. Thus,in one embodiment, RCSD 112 may contain a plurality of network devices.In another embodiment, RCSD 112 may contain a plurality of networkdevices that operate using a master/slave approach, where one of theplurality of network devices of RCSD 112 operates to manage and/orotherwise coordinate operations of the other network devices. In otherembodiments, the RCSD 112 may operate as a plurality of network deviceswithin a cluster architecture, a peer-to-peer architecture, and/or evenwithin a cloud architecture. Thus, the invention is not to be construedas being limited to a single environment, and other configurations, andarchitectures are also envisaged.

One embodiment of PSD 114 is described in more detail below inconjunction with FIG. 4. Briefly, however, PSD 114 includes virtuallyany network device capable of maintaining prerequisites for a pluralityof resources. In some embodiments, one or more prerequisites maycorrespond to each resource. Devices that may be arranged to operate asPSD 114 include various network devices, including, but not limited topersonal computers, desktop computers, multiprocessor systems,microprocessor-based or programmable consumer electronics, network PCs,server devices, network appliances, and the like. Although illustratedseparate, functions of PSD 114 and RCSD 112 may be employed togetherand/or separate as hardware, software, or a combination thereof.

Although FIG. 1 illustrates PSD 114 as a single computing device, theinvention is not so limited. For example, one or more functions of thePSD 114 may be distributed across one or more distinct network devices.Moreover, PSD 114 is not limited to a particular configuration. Thus, inone embodiment, PSD 114 may contain a plurality of network devices. Inanother embodiment, PSD 114 may contain a plurality of network devicesthat operate using a master/slave approach, where one of the pluralityof network devices of PSD 114 operates to manage and/or otherwisecoordinate operations of the other network devices. In otherembodiments, the PSD 114 may operate as a plurality of network deviceswithin a cluster architecture, a peer-to-peer architecture, and/or evenwithin a cloud architecture. Thus, the invention is not to be construedas being limited to a single environment, and other configurations, andarchitectures are also envisaged.

Enclosure of Blade Servers

FIG. 2A shows one embodiment of an enclosure of blade servers 200, whichare also illustrated in FIG. 1. Enclosure of blade servers 200 mayinclude many more or fewer components than those shown in FIG. 2A.However, the components shown are sufficient to disclose an illustrativeembodiment. Generally, a blade server is a stripped down servercomputing device with a modular design optimized to minimize the use ofphysical space and energy. A blade enclosure can include several bladeservers and provide each with power, cooling, network interfaces,input/output interfaces, and resource management. Although not shown, anenclosure of server computers typically includes several computers thatmerely require a network connection and a power cord connection tooperate. Each server computer often includes redundant components forpower and interfaces.

As shown in the figure, enclosure 200 contains power supply 204, andinput/output interface 206, rack logic 208, several blade servers 210,212, 214, and 216, and backplane 202. Power supply 204 provides power toeach component and blade server within the enclosure. The input/outputinterface 206 provides internal and external communication forcomponents and blade servers within the enclosure. Backplane 208 canenable passive and active communication of power, logic, input signals,and output signals for each blade server.

Illustrative Blade Server

FIG. 2B illustrates an illustrative embodiment of blade server 250,which may include many more or fewer components than those shown. Asshown in FIG. 2A, a plurality of blade servers may be included in oneenclosure that shares resources provided by the enclosure to reducesize, power, and cost.

Blade server 250 may include processor 252 which communicates withmemory 256 via bus 254. Blade server 250 may also include input/outputinterface 290, processor-readable stationary storage device 292, andprocessor-readable removable storage device 294. Input/output interface290 can enable blade server 250 to communicate with other blade servers,client devices, network devices, and the like. Interface 290 may providewireless and/or wired communication links for blade server.Processor-readable stationary storage device 292 may include devicessuch as an electromagnetic storage device (hard disk), solid state harddisk (SSD), hybrid of both an SSD and a hard disk, and the like. Also,processor-readable removable storage device 294 enables processor 252 toread non-transitive storage media for storing and accessingprocessor-readable instructions, modules, data structures, and otherforms of data. The non-transitive storage media may include Flashdrives, tape media, floppy media, and the like.

Memory 256 may include Random Access Memory (RAM), Read-Only Memory(ROM), hybrid of RAM and ROM, and the like. As shown, memory 256includes operating system 258 and basic input/output system (BIOS) 260for enabling the operation of blade server 250. In various embodiments,a general-purpose operating system may be employed such as a version ofUNIX, or LINUX′, or a specialized server operating system such asMicrosoft's Windows Server™ and Apple Computer's iOS Server™.

Memory 256 may further include one or more data storage 270, which canbe utilized by blade server 250 to store, among other things,applications 280 and/or other data. Data stores 270 may include programcode, data, algorithms, and the like, for use by processor 252 toexecute and perform actions. In one embodiment, at least some of datastore 270 might also be stored on another component of blade server 250,including, but not limited to, processor-readable removable storagedevice 294, processor-readable stationary storage device 292, or anyother processor-readable storage device (not shown). Data storage 270may include, for example, prerequisites 274 and resources 276. In atleast one embodiment, prerequisites 274 may include or moreprerequisites for each resource 276. In some embodiments, prerequisites274 may include anonymous functions, which may be associated withresources 276 and/or resource configuration application 282.

Applications 280 may include processor executable instructions which,when executed by blade server 250, transmit, receive, and/or otherwiseprocess messages, audio, video, and enable communication with othernetworked computing devices. Examples of application programs includedatabase servers, file servers, calendars, transcoders, and so forth.Applications 280 may include, for example, resource configurationapplication 282. In some embodiments, resource configuration application282 may be configured to perform configuration management tasks,including resource convergence. In at least one of various embodiments,resource configuration application 282 may determine if prerequisitesfor a resource are satisfied. And if so, determine and report at leastone assumption regarding the unsatisfied prerequisites. In any event,resource configuration application 828 may employ processes, or parts ofprocesses, similar to those described in conjunction with FIGS. 5-6, toperform at least some of its actions.

Human interface components (not pictured), may be remotely associatedwith blade server 250, which can enable remote input to and/or outputfrom blade server 250. For example, information to a display or from akeyboard can be routed through the input/output interface 290 toappropriate peripheral human interface components that are remotelylocated. Examples of peripheral human interface components include, butare not limited to, an audio interface, a display, keypad, pointingdevice, touch interface, and the like.

Illustrative Client Device

FIG. 3 shows one embodiment of client device 300 that may include manymore or less components than those shown. Client device 300 mayrepresent, for example, at least one embodiment of client devices shownin FIG. 1.

Client device 300 may include processor 302 in communication with memory304 via bus 328. Client device 300 may also include power supply 330,network interface 332, audio interface 356, display 350, keypad 352,illuminator 354, video interface 342, input/output interface 338, hapticinterface 364, global positioning systems (GPS) receiver 358, open airgesture interface 360, temperature interface 362, camera(s) 340,projector 346, pointing device interface 366, processor-readablestationary storage device 334, and processor-readable removable storagedevice 336. Client device 300 may optionally communicate with a basestation (not shown), or directly with another computing device. And inone embodiment, although not shown, a gyroscope may be employed withinclient device 300 to measuring and/or maintaining an orientation ofclient device 300.

Power supply 330 may provide power to client device 300. A rechargeableor non-rechargeable battery may be used to provide power. The power mayalso be provided by an external power source, such as an AC adapter or apowered docking cradle that supplements and/or recharges the battery.

Network interface 332 includes circuitry for coupling client device 300to one or more networks, and is constructed for use with one or morecommunication protocols and technologies including, but not limited to,protocols and technologies that implement any portion of the OSI modelfor mobile communication (GSM), CDMA, time division multiple access(TDMA), UDP, TCP/IP, SMS, MMS, GPRS, WAP, UWB, WiMax, SIP/RTP, GPRS,EDGE, WCDMA, LTE, UMTS, OFDM, CDMA2000, EV-DO, HSDPA, or any of avariety of other wireless communication protocols. Network interface 332is sometimes known as a transceiver, transceiving device, or networkinterface card (NIC).

Audio interface 356 may be arranged to produce and receive audio signalssuch as the sound of a human voice. For example, audio interface 356 maybe coupled to a speaker and microphone (not shown) to enabletelecommunication with others and/or generate an audio acknowledgementfor some action. A microphone in audio interface 356 can also be usedfor input to or control of client device 300, e.g., using voicerecognition, detecting touch based on sound, and the like.

Display 350 may be a liquid crystal display (LCD), gas plasma,electronic ink, light emitting diode (LED), Organic LED (OLED) or anyother type of light reflective or light transmissive display that can beused with a computing device. Display 350 may also include a touchinterface 344 arranged to receive input from an object such as a stylusor a digit from a human hand, and may use resistive, capacitive, surfaceacoustic wave (SAW), infrared, radar, or other technologies to sensetouch and/or gestures.

Projector 346 may be a remote handheld projector or an integratedprojector that is capable of projecting an image on a remote wall or anyother reflective object such as a remote screen.

Video interface 342 may be arranged to capture video images, such as astill photo, a video segment, an infrared video, or the like. Forexample, video interface 342 may be coupled to a digital video camera, aweb-camera, or the like. Video interface 342 may comprise a lens, animage sensor, and other electronics. Image sensors may include acomplementary metal-oxide-semiconductor (CMOS) integrated circuit,charge-coupled device (CCD), or any other integrated circuit for sensinglight.

Keypad 352 may comprise any input device arranged to receive input froma user. For example, keypad 352 may include a push button numeric dial,or a keyboard. Keypad 352 may also include command buttons that areassociated with selecting and sending images.

Illuminator 354 may provide a status indication and/or provide light.Illuminator 354 may remain active for specific periods of time or inresponse to events. For example, when illuminator 354 is active, it maybacklight the buttons on keypad 352 and stay on while the client deviceis powered. Also, illuminator 354 may backlight these buttons in variouspatterns when particular actions are performed, such as dialing anotherclient device. Illuminator 354 may also cause light sources positionedwithin a transparent or translucent case of the client device toilluminate in response to actions.

Client device 300 may also comprise input/output interface 338 forcommunicating with external peripheral devices or other computingdevices such as other client devices and network devices. The peripheraldevices may include an audio headset, display screen glasses, remotespeaker system, remote speaker and microphone system, and the like.Input/output interface 338 can utilize one or more technologies, such asUniversal Serial Bus (USB), Infrared, WiFi, WiMax, Bluetooth™, and thelike.

Haptic interface 364 may be arranged to provide tactile feedback to auser of the client device. For example, the haptic interface 364 may beemployed to vibrate client device 300 in a particular way when anotheruser of a computing device is calling. Temperature interface 362 may beused to provide a temperature measurement input and/or a temperaturechanging output to a user of client device 300. Open air gestureinterface 360 may sense physical gestures of a user of client device300, for example, by using single or stereo video cameras, radar, agyroscopic sensor inside a device held or worn by the user, or the like.Camera 340 may be used to track physical eye movements of a user ofclient device 300.

GPS transceiver 358 can determine the physical coordinates of clientdevice 300 on the surface of the Earth, which typically outputs alocation as latitude and longitude values. GPS transceiver 358 can alsoemploy other geo-positioning mechanisms, including, but not limited to,triangulation, assisted GPS (AGPS), Enhanced Observed Time Difference(E-OTD), Cell Identifier (CI), Service Area Identifier (SAI), EnhancedTiming Advance (ETA), Base Station Subsystem (BSS), or the like, tofurther determine the physical location of client device 300 on thesurface of the Earth. It is understood that under different conditions,GPS transceiver 358 can determine a physical location for client device300. In at least one embodiment, however, client device 300 may, throughother components, provide other information that may be employed todetermine a physical location of the device, including for example, aMedia Access Control (MAC) address, IP address, and the like.

Human interface components can be peripheral devices that are physicallyseparate from client device 300, allowing for remote input and/or outputto client device 300. For example, information routed as described herethrough human interface components such as display 350 or keyboard 352can instead be routed through network interface 332 to appropriate humaninterface components located remotely. Examples of human interfaceperipheral components that may be remote include, but are not limitedto, audio devices, pointing devices, keypads, displays, cameras,projectors, and the like. These peripheral components may communicateover a Pico Network such as Bluetooth™, Zigbee™ and the like. Onenon-limiting example of a client device with such peripheral humaninterface components is a wearable computing device, which might includea remote pico projector along with one or more cameras that remotelycommunicate with a separately located client device to sense a user'sgestures toward portions of an image projected by the pico projectoronto a reflected surface such as a wall or the user's hand.

A client device may include a browser application that is configured toreceive and to send web pages, web-based messages, graphics, text,multimedia, and the like. The client device's browser application mayemploy virtually any programming language, including a wirelessapplication protocol messages (WAP), and the like. In at least oneembodiment, the browser application is enabled to employ Handheld DeviceMarkup Language (HDML), Wireless Markup Language (WML), WMLScript,JavaScript, Standard Generalized Markup Language (SGML), HyperTextMarkup Language (HTML), eXtensible Markup Language (XML), HTML5, and thelike.

Memory 304 may include RAM, ROM, and/or other types of memory. Memory304 illustrates an example of computer-readable storage media (devices)for storage of information such as computer-readable instructions, datastructures, program modules or other data. Memory 304 may store BIOS 308for controlling low-level operation of client device 300. The memory mayalso store operating system 306 for controlling the operation of clientdevice 300. It will be appreciated that this component may include ageneral-purpose operating system such as a version of UNIX, or LINUX™,or a specialized mobile computer communication operating system such asWindows Phone™, or the Symbian® operating system. The operating systemmay include, or interface with a Java virtual machine module thatenables control of hardware components and/or operating systemoperations via Java application programs.

Memory 304 may further include one or more data storage 310, which canbe utilized by client device 300 to store, among other things,applications 320 and/or other data. For example, data storage 310 mayalso be employed to store information that describes variouscapabilities of client device 300. The information may then be providedto another device based on any of a variety of events, including beingsent as part of a header during a communication, sent upon request, orthe like. Data storage 310 may also be employed to store socialnetworking information including address books, buddy lists, aliases,user profile information, or the like. Data storage 310 may furtherinclude program code, data, algorithms, and the like, for use by aprocessor, such as processor 302 to execute and perform actions. In oneembodiment, at least some of data storage 310 might also be stored onanother component of client device 300, including, but not limited to,non-transitory processor-readable removable storage device 336,processor-readable stationary storage device 334, or even external tothe client device. In some embodiments, data storage 310 may includeprerequisites 312 and/or resources 314. In at least one of variousembodiments, prerequisites 312 and/or resources 314 may be embodimentsof prerequisites 274 and/or resources 276 of FIG. 2B, respectively.

Applications 320 may include computer executable instructions which,when executed by client device 300, transmit, receive, and/or otherwiseprocess instructions and data. Applications 320 may include, forexample, resource configuration application 322. Other examples ofapplication programs include calendars, search programs, email clientapplications, IM applications, SMS applications, Voice Over InternetProtocol (VOIP) applications, contact managers, task managers,transcoders, database programs, word processing programs, securityapplications, spreadsheet programs, games, search programs, and soforth.

Resource configuration application 322 may be configured to performconfiguration management tasks, including resource convergence. In atleast one of various embodiments, resource configuration application 322may determine if prerequisites for a resource are satisfied. And if so,determine and report at least one assumption regarding the unsatisfiedprerequisites. In any event, resource configuration application 322 mayemploy processes, or parts of processes, similar to those described inconjunction with FIGS. 5-6, to perform at least some of its actions.

Illustrative Network Device

FIG. 4 shows one embodiment of network device 400 that may be includedin a system implementing the invention. Network device 400 may includemany more or less components than those shown in FIG. 4. However, thecomponents shown are sufficient to disclose an illustrative embodimentfor practicing the present invention. Network device 400 may represent,for example, one embodiment of at least one of network device 112, 114,or 120 of FIG. 1.

As shown in the figure, network device 400 may include a processor 402in communication with a memory 404 via a bus 428. Network device 400 mayalso include a power supply 430, network interface 432, audio interface456, display 450, keyboard 452, input/output interface 438,processor-readable stationary storage device 434, processor-readableremovable storage device 436, and pointing device interface 458. Powersupply 430 provides power to network device 400.

Network interface 432 may include circuitry for coupling network device400 to one or more networks, and is constructed for use with one or morecommunication protocols and technologies including, but not limited to,protocols and technologies that implement any portion of the OpenSystems Interconnection model (OSI model), GSM, CDMA, time divisionmultiple access (TDMA), UDP, TCP/IP, SMS, MMS, GPRS, WAP, UWB, WiMax,SIP/RTP, or any of a variety of other wired and wireless communicationprotocols. Network interface 432 is sometimes known as a transceiver,transceiving device, or network interface card (NIC). Network device 400may optionally communicate with a base station (not shown), or directlywith another computing device.

Audio interface 456 is arranged to produce and receive audio signalssuch as the sound of a human voice. For example, audio interface 456 maybe coupled to a speaker and microphone (not shown) to enabletelecommunication with others and/or generate an audio acknowledgementfor some action. A microphone in audio interface 456 can also be usedfor input to or control of network device 400, for example, using voicerecognition.

Display 450 may be a liquid crystal display (LCD), gas plasma,electronic ink, light emitting diode (LED), Organic LED (OLED) or anyother type of light reflective or light transmissive display that can beused with a computing device. Display 450 may be a handheld projector orpico projector capable of projecting an image on a wall or other object.

Network device 400 also may also comprise input/output interface 438 forcommunicating with external devices not shown in FIG. 4. Input/outputinterface 438 can utilize one or more wired or wireless communicationtechnologies, such as USB™, Firewire™ WiFi, WiMax, Thunderbolt™,Infrared, Bluetooth™, Zigbee™, serial port, parallel port, and the like.

Human interface components can be physically separate from networkdevice 400, allowing for remote input and/or output to network device400. For example, information routed as described here through humaninterface components such as display 450 or keyboard 452 can instead berouted through the network interface 432 to appropriate human interfacecomponents located elsewhere on the network. Human interface componentscan include any component that allows the computer to take input from,or send output to, a human user of a computer.

Memory 404 may include RAM, ROM, and/or other types of memory. Memory404 illustrates an example of computer-readable storage media (devices)for storage of information such as computer-readable instructions, datastructures, program modules or other data. Memory 404 may store BIOS 408for controlling low-level operation of network device 400. The memorymay also store operating system 406 for controlling the operation ofnetwork device 400. It will be appreciated that this component mayinclude a general-purpose operating system such as a version of UNIX, orLINUX™, or a specialized operating system such as MicrosoftCorporation's Windows® operating system, or the Apple Corporation's iOS®operating system. The operating system may include, or interface with aJava virtual machine module that enables control of hardware componentsand/or operating system operations via Java application programs.

Memory 404 may further include one or more data storage 410, which canbe utilized by network device 400 to store, among other things,applications 420 and/or other data. For example, data storage 410 mayalso be employed to store information that describes variouscapabilities of network device 400. The information may then be providedto another device based on any of a variety of events, including beingsent as part of a header during a communication, sent upon request, orthe like. Data storage 410 may also be employed to store socialnetworking information including address books, buddy lists, aliases,user profile information, or the like. Data stores 410 may furtherinclude program code, data, algorithms, and the like, for use by aprocessor, such as processor 402 to execute and perform actions. In oneembodiment, at least some of data store 410 might also be stored onanother component of network device 400, including, but not limited to,non-transitory media inside processor-readable removable storage device436, processor-readable stationary storage device 434, or any othercomputer-readable storage device within network device 400, or evenexternal to network device 400.

In some embodiments, data storage 410 may include prerequisites 412and/or resources 414. In at least one of various embodiments,prerequisites 412 and/or resources 414 may be embodiments ofprerequisites 274 and/or resources 276 of FIG. 2B, respectively. In atleast one embodiment, prerequisites 412 may be stored and/or otherwiseprocessed by PSD 114 of FIG. 1. In at least another embodiment,resources 414 may be stored and/or otherwise processed by RCSD 112 ofFIG. 1.

Applications 420 may include computer executable instructions which,when executed by network device 400, transmit, receive, and/or otherwiseprocess messages (e.g., SMS, MMS, Instant Message (IM), email, and/orother messages), audio, video, and enable telecommunication with anotheruser of another client device. Other examples of application programsinclude calendars, search programs, email client applications, IMapplications, SMS applications, Voice Over Internet Protocol (VOIP)applications, contact managers, task managers, transcoders, databaseprograms, word processing programs, security applications, spreadsheetprograms, games, search programs, and so forth. Applications 420 mayinclude, for example, resource configuration application 422.

Resource configuration application 422 may be configured to performconfiguration management tasks, including resource convergence. In atleast one of various embodiments, resource configuration application 422may determine if prerequisites for a resource are satisfied. And if so,determine and report at least one assumption regarding the unsatisfiedprerequisites. In some embodiments, resource configuration application422 may be employed by RCSD 112 of FIG. 1. In any event, resourceconfiguration application 422 may employ processes, or parts ofprocesses, similar to those described in conjunction with FIGS. 5-6, toperform at least some of its actions.

General Operation

The operation of certain aspects of the invention will now be describedwith respect to FIGS. 5 and 6. In at least one of various embodiments,processes 500 and 600 described in conjunction with FIGS. 5 and 6,respectively, may be implemented by and/or executed on a single networkdevice, such as network device 400 of FIG. 4. In other embodiments,these processes or portions of process thereof may be implemented byand/or executed on a plurality of network devices, such as networkdevice 400 of FIG. 4. In yet other embodiments, these processes, orportions thereof, may be implemented by and/or executed on one or moreblade servers, such as blade server 250 of FIG. 2B. However, embodimentsare not so limited and various combinations of network devices, bladeservers, or the like may be utilized.

FIG. 5 illustrates a logical flow diagram generally showing oneembodiment of an overview process for determining if prerequisites for aresource are satisfied and reporting assumptions based on theprerequisites. Process 500 begins, after a start block, at block 502,where a resource may be provided. In at least one embodiment, theresource may be a data object that defines a target state of thecomputing system. In some embodiments, a user may determine and/orselect the resource. In at least one embodiment, each resource mayinclude one or more attributes that may define the target state.

In at least one of various embodiments, one or more providers may beemployed to perform an action based on the provided resource to put thesystem into the target state as defined by the resource. In someembodiments, a provider may be a state machine and/or a class of objectsthat moves and/or includes instructions for moving resources from acurrent state to a target state.

In some embodiments, the provider may employ a predefined oruser-selected action for moving a resource (i.e., the computing system)between states. In some embodiments, each provider may be configured toperform separate actions for a given resource for different computingsystems and/or platforms. For example, assume a resource defines atarget state of an application being installed. In this example,different providers may be employed for different operating systems,where each provider includes the actions that enable installation of theapplication for a given operating system.

In at least one embodiment, a provider may utilize the attributes of aresource to generate one or more requirement functions, such as one ormore prerequisites. In some embodiments, each requirement function maycorrespond to an assumption that can be reported to a user. In someembodiments, a provider can instantiate a lower-level provider and passits requirements to the lower-level provider.

In any event, process 500 proceeds to block 504, where at least oneprerequisite that corresponds to the provided resource may bedetermined. In some embodiments, the prerequisites may be instructions,conditions, or the like, that define what the resource depends on inorder to put the computing system into the target state as defined bythe resource.

In at least one embodiment, the prerequisites may be anonymous functions(e.g., requirement functions generated by a provider based on attributesof the provided resource) that may be packaged into the resource (i.e.,the data object). In other embodiments, the prerequisites may be encodedinto the source code of the data object, the provider, or the like. Inat least one embodiment, the prerequisites may indicate what previousactions should occur and/or what previous conditions should be satisfiedbefore a state transition occurs to put the system into the targetstate. For example, the prerequisites may include the previousinstallation of program, previously starting/running a program,previously creating and/or initializing a file/directory, or the like.In some embodiments, the prerequisites may identify what a current stateof the system should be to enable a state transition to put the systeminto the target state defied by the resource.

Process 500 continues at decision block 506, where a determination maybe made whether the at least one prerequisite is satisfied for theresource. In some embodiments, this determination may be performed bycomparing at least a portion of the current state of the system and theprerequisites.

In some embodiments, one or more prerequisites may be satisfied, whileone or more other prerequisites may be unsatisfied. In at least oneembodiment, the determination whether the at least one prerequisite issatisfied may depend on each prerequisite for the resource beingsatisfied. For example, assume two prerequisites for a resource include“a program is installed” and “a directory is created.” In this example,the prerequisites for the resource, as a whole, may be unsatisfied ifthe program is installed, but the directory is not created—or if thedirectory is created, but the program is not installed. However,embodiments are not so limited and other methods of determining ifprerequisites are satisfied may be employed. If the prerequisites aresatisfied, then process 500 may return to a calling process to performother actions; otherwise, process 500 may flow to block 508.

At block 508, at least one assumption may be determined based on theprerequisites that correspond to the resource and whether theprerequisites are satisfied. In at least one embodiment, theprerequisites for the resource may include a link, reference, or otherassociation with one or more assumptions. In some embodiments, theassumptions may include instructions and/or information regarding whatprerequisites were or were not satisfied and/or why a prerequisite wasnot satisfied. In other embodiments, the assumptions may indicate whatthe target state of the system would be if the prerequisites weresatisfied. For example, if a prerequisite of “a program is installed” isunsatisfied—the determined assumption may indicate that the program wasnot installed, but it will be assumed that the program was installed toenable the system perform other actions (e.g., to move to the targetstate with a state transition).

Process 500 next proceeds to block 510, where the determined assumptionsmay be reported. In at least one embodiment, the report may be displayedand/or otherwise provided to a user of the computing system (e.g., asystem administrator). In some embodiments, the system may be enabled toperform other actions as if the prerequisites were satisfied and a statetransition occurred to put the system into the target state—as definedby the resource.

After block 510, process 500 may return to a calling process to performother actions.

FIG. 6 illustrates a logical flow diagram generally showing analternative embodiment of a process for determining if prerequisites fora resource are satisfied and reporting assumptions based on theprerequisites. Process 600 begins, after a start block, at block 602,where a resource may be provided. In at least one of variousembodiments, block 602 may employ embodiments of block 502 of FIG. 5 toprovide a resource.

Process 600 proceeds to block 604, where at least one prerequisite thatcorresponds to the provided resource may be determined. In at least oneof various embodiments, block 604 may employ embodiments of block 604 ofFIG. 6 to determine prerequisites that correspond to the providedresource.

Process 600 proceeds next to block 606, where a current state of thesystem may be determined. In at least one embodiment, a current state ofthe system may be stored by the system. In some embodiments, the currentstate may include information about the computing system, including, butnot limited to, applications that are installed and/or running,accessible files and/or directories, or the like.

Process 600 continues at decision block 608, where a determination maybe made whether the at least one prerequisite is satisfied for theresource. In at least one of various embodiments, decision block 608 mayemploy embodiments of block 506 of FIG. 5 to determine whether theprerequisites are met for the resource.

In some embodiments, this determination may be based on one or moreassumptions determined for one or more previously provided resources. Inat least one embodiment, a prerequisite for a resource may be satisfiedbased on an assumption determined (e.g., at block 614) for a previousresource. For example, assume two resources need to be converged:install program (Resource_1) and start program (Resource_2). Now assumethe prerequisites for Resource_1 were previously unsatisfied (e.g.,program did not install) and that the assumptions “target state isinstalled” and that the system “would execute an install action” weredetermined (e.g., at block 614). These assumptions may then be utilizedto determine if the prerequisites for Resource_2 are satisfied. Forexample, the prerequisite for Resource_2 may include “programsuccessfully installed.” Since the program did not install, butassumptions of the previous resource where that the program wasinstalled, the prerequisites for Resource_2 may be satisfied.

If the prerequisites are met, then process 600 may flow to decisionblock 620; otherwise, process 600 may flow to decision block 610.

At decision block 620, a determination may be made whether the currentstate of the system matches the target state defined by the resource(e.g., a target state). In some embodiments, the current state may becompared to the target state to determine if the states match. If thecurrent state matches the target state, then process 600 may flow todecision block 626; otherwise, process 600 may flow to decision block622.

At decision block 622, a determination may be made whether the system isoperating in a non-operational, or “no-op,” mode. In some embodiments, ano-op mode may indicate that actions to be performed by theconfiguration management may be simulated and/or emulated, but notexecuted by the system. For example, assume an “install application”action—the application may not be installed, but may be identified asbeing installed for other actions and/or operations of the system. Ifthe system is operating in a no-op mode, then process 600 may flow toblock 618; otherwise, process 600 may flow to block 624.

At block 624, a state transition may be executed, and/or otherwise mayoccur, to put the system into the target state. In some embodiments,transitions may be determined based on the current state, the targetstate defined by the resource, and the provider. In at least oneembodiment, the state transition may be determined by a provider thatenables the system to move from the current state to the target statedefined by the resource. In some embodiments, different providers may beconfigured to enable the execution of different actions to perform thestate transition. As described above, providers may be configured toperform separate actions for different computing systems and/orplatforms. In at least one embodiment, each provider may enabledifferent actions to perform a state transition to move the system fromthe current state to the target state. After the transition isdetermined, the system may execute the transition to put the system intothe target state. After block 624, process 600 may flow to decisionblock 626.

If, at decision block 608, the prerequisites for the resource are notsatisfied, then process 600 may flow to decision block 610. At decisionblock 610, a determination may be made whether the system is operatingin a no-op mode. In at least one of various embodiments, decision block610 may employ embodiments of decision block 622 determine if the systemis operating in a no-op mode. If the system is operating in a no-opmode, then process 600 may flow to block 614; otherwise, process 600 mayflow to block 612.

At block 612, an error may be reported. In some embodiments, if thesystem is not operating in a no-op mode, then the actions may beperformed and/or executed by the system. However, if at decision block608 the prerequisites are not satisfied, then the system may be unableto execute the actions. So, the system may report an error to a userand/or system administrator. After block 612, process 600 may return toa calling process to perform other actions.

If, at decision block 610, the system is operating in a no-op mode, thenprocess 600 may flow to block 614. At block 614, at least one assumptionmay be determined based on the prerequisites that correspond to theresource. In at least one of various embodiments, block 614 may employembodiments of block 508 of FIG. 5 to determine the assumptions.

Process 600 proceeds next to block 616, where the at least onedetermined assumption may be reported. In at least one embodiment, block616 may employ embodiments of block 510 of FIG. 5 to report theassumptions to a user.

Process 600 continues at block 618, where a transition may be reportedto the user. In some embodiments, block 618 may employ embodiments ofblock 624 to determine the transition to put the system into the targetstate. Unlike block 624, the system may report the transition, ratherthan execute the transition (because the system may be operating in ano-op mode).

In any event, process 600 proceeds next to decision block 626, where adetermination of whether another resource may be provided. In someembodiments, a user may provide a plurality of resources, where theconvergence of one or more resources depends on the convergence of oneor more other resources. In some embodiments, this dependency may be anotification between resources. If another resource may be provided,then process 600 may loop to block 602 to provide the other resource;otherwise, process 600 may return to a calling process to perform otheractions.

It will be understood that each block of the flowchart illustration, andcombinations of blocks in the flowchart illustration, can be implementedby computer program instructions. These program instructions may beprovided to a processor to produce a machine, such that theinstructions, which execute on the processor, create means forimplementing the actions specified in the flowchart block or blocks. Thecomputer program instructions may be executed by a processor to cause aseries of operational steps to be performed by the processor to producea computer-implemented process such that the instructions, which executeon the processor to provide steps for implementing the actions specifiedin the flowchart block or blocks. The computer program instructions mayalso cause at least some of the operational steps shown in the blocks ofthe flowchart to be performed in parallel. Moreover, some of the stepsmay also be performed across more than one processor, such as mightarise in a multi-processor computer system. In addition, one or moreblocks or combinations of blocks in the flowchart illustration may alsobe performed concurrently with other blocks or combinations of blocks,or even in a different sequence than illustrated without departing fromthe scope or spirit of the invention.

Accordingly, blocks of the flowchart illustration support combinationsof means for performing the specified actions, combinations of steps forperforming the specified actions and program instruction means forperforming the specified actions. It will also be understood that eachblock of the flowchart illustration, and combinations of blocks in theflowchart illustration, can be implemented by special purposehardware-based systems, which perform the specified actions or steps, orcombinations of special purpose hardware and computer instructions. Theforegoing example should not be construed as limiting and/or exhaustive,but rather, an illustrative use case to show an implementation of atleast one of the various embodiments of the invention.

Use Case Example

FIGS. 7 and 8 show use case illustrations of multiple resources and thereported assumptions generated based on the resources.

Example 700 of FIG. 7 illustrates a plurality of resources and theassumptions reported based on prerequisites that correspond to theresources. Resources 704 and 708 may be provided by a user. In someembodiments, each of resources 704 and 708 may correspond to one or moreprerequisites. By employing embodiments described herein, one or moreassumptions may be determined and reported. For example, assumptions 702and 706 may be determined based on resources 704 and 708, respectively.As illustrated, assumption 702 may indicate the current state(application apache2 not installed), the target state defined by theresource (application apache2 installed), and the state transition thatwould occur (the application would be installed). Similarly, assumption706 may indicate the current state (service is down), the target statedefined by the resource (application is running), and the statetransition that would occur (the application would be started).Assumptions 706 may also include other assumptions. For example, aprerequisite of resource 708 may be that apache2 was installed. However,since it was not installed (as indicated by assumption 702), assumption706 may indicate that it “expected init script in/etc/init.d/apache2does not exist” and that it is “assuming init script would have beenpreviously installed.” These assumptions may enable a systemadministrator to better understand what errors occurred and whatoperation, action, or resource, caused the error. However, embodimentsare not so limited to these resources, prerequisites, and/orassumptions, but rather others may be employed.

Example 800 of FIG. 8 is another use case example illustrating aresource and the assumptions reported based on prerequisites thatcorrespond to the resource. In this example, assumptions 802 may bedetermined based on whether the prerequisites of resource 804 aresatisfied. As illustrated, assumption 802 may indicate the current state(content-sha(ede78b)), the target state defined by the resource (whichmay be the content changes), and the state transition that would occur(content would be created). However, embodiments are not so limited tothese resources, prerequisites, and/or assumptions, but rather othersmay be employed.

The above specification, examples, and data provide a completedescription of the composition, manufacture, and use of the invention.Since many embodiments of the invention can be made without departingfrom the spirit and scope of the invention, the invention resides in theclaims hereinafter appended.

What is claimed is:
 1. A method for providing configuration managementof computer resources for a computing system of at least one networkdevice, wherein at least one other network device enables actions to beperformed, comprising: providing a computer resource that includes oneor more attributes that define a target state of the computing system;employing one or more state machines to use the one or more attributesto generate one or more requirement functions that determine one or moreprerequisites that correspond to the computer resource, wherein thestate machine provides instructions for moving the computer resourcefrom the current state to the target state; determining one or moreassumptions that correspond to the one or more requirement functionsregarding the computing system based on whether the one or moreprerequisites is unsatisfied for the computer resource or the computingsystem is in a non-operational mode, wherein the one or more assumptionsincludes one or more state transitions that upon occurrence puts thecomputing system into the target state; and providing one or more of theone or more assumptions or one or more other assumptions in a report toa user of the computing system.
 2. The method of claim 1, whereinemploying the one or more state machines, further comprises configuringeach different state machine to perform separate actions for differentcomputing systems to move the computing system from a current state intothe target state based on at least the at least one attribute for thecomputer resource.
 3. The method of claim 1, further comprising whenanother computer resource is converged with the computer resource,determining the one or more other assumptions based on whether one ormore other prerequisites are unsatisfied for the other computerresource, wherein the one or more other assumptions include one or moreother state transitions that upon occurrence puts the computing systemin the target state.
 4. The method of claim 1, further comprisingemploying the one or more state machines to instantiate a lower-levelstate machine and to pass the one or more requirement functions to thelower-level state machine.
 5. The method of claim 1, further comprising:when the system is in the non-operational mode, enabling the computingsystem to perform other actions as if the prerequisites are satisfiedand the state transition occurred.
 6. The method of claim 1, furthercomprising: determining one or more other prerequisites that correspondto another computer resource; determining one or more other assumptionsbased on whether the one or more other prerequisites are unsatisfied forthe other computer resource; and providing the one or more otherassumptions in the report.
 7. The method of claim 1, wherein the one ormore state transitions that upon occurrence puts the computing systeminto the target state is determined based on the current state of thecomputing system and the target state.
 8. A system for providingconfiguration management of computer resources for a computing system ofone or more network devices, comprising: one or more other networkdevices, comprising: a memory for storing data and instructions; and oneor more processors that execute the instructions to enable actions,comprising: providing a computer resource that includes one or moreattributes that define a target state of the computing system; employingone or more state machines to use the one or more attributes to generateone or more requirement functions that determine one or moreprerequisites that correspond to the computer resource, wherein thestate machine provides instructions for moving the computer resourcefrom the current state to the target state; determining one or moreassumptions that correspond to the one or more requirement functionsregarding the computing system based on whether the one or moreprerequisites is unsatisfied for the computer resource or the computingsystem is in a non-operational mode, wherein the one or more assumptionsincludes one or more state transitions that upon occurrence puts thecomputing system into the target state; and providing one or more of theone or more assumptions or one or more other assumptions in a report toa user of the computing system.
 9. The system of claim 8, whereinemploying the one or more state machines, further comprises configuringeach different state machine to perform separate actions for differentcomputing systems to move the computing system from a current state intothe target state based on at least the at least one attribute for thecomputer resource.
 10. The system of claim 8, further comprising whenanother computer resource is converged with the computer resource,determining the one or more other assumptions based on whether one ormore other prerequisites are unsatisfied for the other computerresource, wherein the one or more other assumptions include one or moreother state transitions that upon occurrence puts the computing systemin the target state.
 11. The system of claim 8, further comprisingemploying the one or more state machines to instantiate a lower-levelstate machine and to pass the one or more requirement functions to thelower-level state machine.
 12. The system of claim 8, furthercomprising: when the system is in the non-operational mode, enabling thecomputing system to perform other actions as if the prerequisites aresatisfied and the state transition occurred.
 13. The system of claim 8,further comprising: determining one or more other prerequisites thatcorrespond to another computer resource; determining one or more otherassumptions based on whether the one or more other prerequisites areunsatisfied for the other computer resource; and providing the one ormore other assumptions in the report.
 14. The system of claim 8, whereinthe one or more state transitions that upon occurrence puts thecomputing system into the target state is determined based on thecurrent state of the computing system and the target state.
 15. Aprocessor readable non-transitory storage media that includesinstructions for providing configuration management of computerresources for a computing system of one or more network devices, whereinthe execution of the instructions by one or more processors enablesactions, comprising: providing a computer resource that includes one ormore attributes that define a target state of the computing system;employing one or more state machines to use the one or more attributesto generate one or more requirement functions that determine one or moreprerequisites that correspond to the computer resource, wherein thestate machine provides instructions for moving the computer resourcefrom the current state to the target state; determining one or moreassumptions that correspond to the one or more requirement functionsregarding the computing system based on whether the one or moreprerequisites is unsatisfied for the computer resource or the computingsystem is in a non-operational mode, wherein the one or more assumptionsincludes one or more state transitions that upon occurrence puts thecomputing system into the target state; and providing one or more of theone or more assumptions or one or more other assumptions in a report toa user of the computing system.
 16. The media of claim 15, whereinemploying the one or more state machines, further comprises configuringeach different state machine to perform separate actions for differentcomputing systems to move the computing system from a current state intothe target state based on at least the at least one attribute for thecomputer resource.
 17. The media of claim 15, further comprising whenanother computer resource is converged with the computer resource,determining the one or more other assumptions based on whether one ormore other prerequisites are unsatisfied for the other computerresource, wherein the one or more other assumptions include one or moreother state transitions that upon occurrence puts the computing systemin the target state.
 18. The media of claim 15, further comprisingemploying the one or more state machines to instantiate a lower-levelstate machine and to pass the one or more requirement functions to thelower-level state machine.
 19. The media of claim 15, furthercomprising: when the system is in the non-operational mode, enabling thecomputing system to perform other actions as if the prerequisites aresatisfied and the state transition occurred.
 20. The media of claim 15,further comprising: determining one or more other prerequisites thatcorrespond to another computer resource; determining one or more otherassumptions based on whether the one or more other prerequisites areunsatisfied for the other computer resource; and providing the one ormore other assumptions in the report.
 21. The media of claim 15, whereinthe one or more state transitions that upon occurrence puts thecomputing system into the target state is determined based on thecurrent state of the computing system and the target state.
 22. Anetwork device for providing configuration management of resources for acomputing system of one or more network devices, comprising: a memoryfor storing data and instructions; and one or more processors thatexecute the instructions to enable actions, comprising: providing acomputer resource that includes one or more attributes that define atarget state of the computing system; employing one or more statemachines to use the one or more attributes to generate one or morerequirement functions that determine one or more prerequisites thatcorrespond to the computer resource, wherein the state machine providesinstructions for moving the computer resource from the current state tothe target state; determining one or more assumptions that correspond tothe one or more requirement functions regarding the computing systembased on whether the one or more prerequisites is unsatisfied for thecomputer resource or the computing system is in a non-operational mode,wherein the one or more assumptions includes one or more statetransitions that upon occurrence puts the computing system into thetarget state; and providing one or more of the one or more assumptionsor one or more other assumptions in a report to a user of the computingsystem.
 23. The network device of claim 22, wherein employing the one ormore state machines, further comprises configuring each different statemachine to perform separate actions for different computing systems tomove the computing system from a current state into the target statebased on at least the at least one attribute for the computer resource.24. The network device of claim 22, further comprising when anothercomputer resource is converged with the computer resource, determiningthe one or more other assumptions based on whether one or more otherprerequisites are unsatisfied for the other computer resource, whereinthe one or more other assumptions include one or more other statetransitions that upon occurrence puts the computing system in the targetstate.
 25. The network device of claim 22, further comprising employingthe one or more state machines to instantiate a lower-level statemachine and to pass the one or more requirement functions to thelower-level state machine.
 26. The network device of claim 22, furthercomprising: when the system is in the non-operational mode, enabling thecomputing system to perform other actions as if the prerequisites aresatisfied and the state transition occurred.
 27. The network device ofclaim 22, further comprising: determining one or more otherprerequisites that correspond to another computer resource; determiningone or more other assumptions based on whether the one or more otherprerequisites are unsatisfied for the other computer resource; andproviding the one or more other assumptions in the report.
 28. Thenetwork device of claim 22, wherein the one or more state transitionsthat upon occurrence puts the computing system into the target state isdetermined based on the current state of the computing system and thetarget state.